Release process¶
Merging PRs¶
We’re not using pagure’s merge button as it doesn’t do everything we want. Instead pg script is used.
$ pg pr checkout <PR number>
will checkout given PR and it can be reviewed locally. It can be rebased in this time or it can be done automatically in the moment of merging:
$ pg pr merge -r
This will merge the changes, fetch info from pagure, and show you the current git changelog. The changelog should be looked over for any issues, and it will require special formatting so pagure will close out the release notes pull request automatically.
For example, you’ll want the ‘Merges’ and ‘Fixes’ lines.
The unit tests should be run before pushing if there were any new code changes
since the last tests. After that, it will be ready to push. Test with git push
-n
first before the push to make sure it’s correct.
Release Notes¶
There should be separate PR with release notes (and version bumps) for every release.
Pushing the Code¶
Once Koji is ready to release, double check that the release notes are the only open pull request. If that’s the case, the release notes are ready to merge.
Once the code is pushed, make sure all the PRs in the release roadmap are closed, including the release notes PR.
Now the release should be tagged. All Koji releases have been signed, using this command:
$ git tag -a -s -m 'Koji 1.18.0' koji-1.18.0
Then the tag must be pushed:
$ git push origin refs/tags/koji-1.18.0
To create the tarball, run make tarball
from the base koji directory. You
should then copy the tarball to some other directory, just to have a backup. The
tarball should be uploaded through the pagure interface, though the upload can
also be done via ssh.
Once it’s uploaded, download it and check the shasum against your local tarball. If there are no issues, Koji’s code release is complete.
Updating the Site¶
The next step is to update the Koji site with the new docs and release notes. This content is based in a separate repo from the Koji one.
Simple bash script for this repo could be used, kdoc
. Using kdoc
, run
these commands in the docs repo:
$ kdoc release-1.18.0:test
$ kdoc
kdoc
checks out the master branch of the koji git repo, constructs docs from
that, and copies those changes into the doc repo. Once the changes are in place,
commit them and push them to your fork:
$ git commit -m 'koji 1.18.0 release'
$ git diff --stat test
$ git push mikem
Check your fork to make sure everything looks good (for example, check against a previous release), then push the changes with ‘git push.’
#!/bin/bash
# kdoc shell script
set -x
set -e
# TODO more sanity checks
KDIR=~/cvs/koji
DOCDIR=~/cvs/koji-docs
DBRANCH=master
SBRANCH=master
branches=$1
if test -n "$branches"; then
dst=${branches#*:}
src=${branches%:*}
test -n "$src" && SBRANCH=$src
test -n "$dst" && DBRANCH=$dst
fi
cd "$KDIR/docs"
test -n "$SBRANCH" && git checkout $SBRANCH
make dirhtml
cd "$DOCDIR"
test -n "$DBRANCH" && git checkout $DBRANCH
rsync -avPH --delete --exclude .git "$KDIR/docs/build/dirhtml/" "$DOCDIR/"
git status
echo "Docdir is: $DOCDIR"
Pushing to PyPi¶
All releases should also go to PyPi repository, even if we’ve not publicly announced, that it is the supported delivery channel.
$ dnf install twine
$ make pypi
$ make pypi-upload
Release Email¶
The last step is to send out an email to koji-devel@lists.fedorahosted.org. See previous release emails for how to format the message.
Generally the email should include a link to the release notes, list some highlights from the release, links to the release roadmap and current roadmap, and a link to the download.
Required Permissions¶
Merge permissions for the koji repo
Merge permissions / access to the docs repo
Key for signing